package com.huike.pmps.service.impl;

import com.huike.pmps.dao.CockpitProvinceDao;
import com.huike.pmps.dao.NewSignDao;
import com.huike.pmps.dao.PaymentCollectionDao;
import com.huike.pmps.model.entity.Member;
import com.huike.pmps.model.vo.Result;
import com.huike.pmps.service.CockpitProvinceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;

/**
 * 作者：谌贵斌(黑桃K)
 * 日期: 2888-08-08
 * 老师QQ: 272488352
 * 官方QQ交流群: 377748272
 * 刀客程序员官网：http://www.daoke360.com
 * 刀客程序员淘宝旗舰店：https://daoke360.taobao.com/
 */
@Service
public class CockpitProvinceServiceImpl implements CockpitProvinceService {

    @Autowired
    NewSignDao newSignDao;

    @Autowired
    PaymentCollectionDao paymentCollectionDao;

    @Autowired
    CockpitProvinceDao cockpitProvinceDao;

    /**
     * 省区 新合同数量及金额
     */
    @Override
    public Result selectNewSignData(Member member, Integer year, Integer month) {
        //省管理员
        if (!member.getRolesIds().contains(3)) return Result.failure("您的账号不是省管理员角色，无权查看");
        if (member.getProvinceId() == null) return Result.failure("您的账号没有配置所属省区,请联系系统管理员进行省区配置");
        if (year != null && month != null && month == 0) {
            return Result.success(newSignDao.selectProvinceNewSignData(member.getProvinceId(), year, null));
        } else if (year != null && month != null && month != 0) {
            return Result.success(newSignDao.selectProvinceNewSignData(member.getProvinceId(), year, month));
        } else {
            return Result.success(newSignDao.selectProvinceNewSignData(member.getProvinceId(), LocalDate.now().getYear(), LocalDate.now().getMonthValue()));
        }
    }

    /**
     * 省区 产品销售金额及数量
     */
    @Override
    public Result selectProductNewSignContractAmount(Member member, Integer year, Integer month) {
        //省管理员
        if (!member.getRolesIds().contains(3)) return Result.failure("您的账号不是省管理员角色，无权查看");
        if (member.getProvinceId() == null) return Result.failure("您的账号没有配置所属省区,请联系系统管理员进行省区配置");
        if (month == 0)
            return Result.success(newSignDao.selectProvinceProductNewSignContractAmount(member.getProvinceId(), year, null));
        else
            return Result.success(newSignDao.selectProvinceProductNewSignContractAmount(member.getProvinceId(), year, month));

    }

    /**
     * 省区 周期款情况
     */
    @Override
    public Result selectPaymentCollectAmount(Member member, Integer year) {
        //省管理员
        if (!member.getRolesIds().contains(3)) return Result.failure("您的账号不是省管理员角色，无权查看");
        if (member.getProvinceId() == null) return Result.failure("您的账号没有配置所属省区,请联系系统管理员进行省区配置");
        return Result.success(paymentCollectionDao.selectProvincePaymentCollectAmount(member.getProvinceId(), year));
    }

    /**
     * 省区 运营毛利
     */
    @Override
    public Result selectGrossProfit(Member member, Integer year, Integer month) {
        //省管理员
        if (!member.getRolesIds().contains(3)) return Result.failure("您的账号不是省管理员角色，无权查看");
        if (member.getProvinceId() == null) return Result.failure("您的账号没有配置所属省区,请联系系统管理员进行省区配置");
        if (year != null && month != null && month == 0) {
            return Result.success(cockpitProvinceDao.getGrossProfitByYear(member.getProvinceId(), year));
        } else if (year != null && month != null && month != 0) {
            return Result.success(cockpitProvinceDao.getGrossProfitByMonth(member.getProvinceId(), year, month));
        } else {
            return Result.success(cockpitProvinceDao.getGrossProfitByMonth(member.getProvinceId(), LocalDate.now().getYear(), LocalDate.now().getMonthValue()));
        }

    }

    /**
     * 省区 运营财务数据
     */
    @Override
    public Result selectFinance(Member member, Integer year, Integer month) {
        //省管理员
        if (!member.getRolesIds().contains(3)) return Result.failure("您的账号不是省管理员角色，无权查看");
        if (member.getProvinceId() == null) return Result.failure("您的账号没有配置所属省区,请联系系统管理员进行省区配置");
        if (year != null && month != null && month == 0) {
            return Result.success(cockpitProvinceDao.getFinanceByYear(member.getProvinceId(), year));
        } else if (year != null && month != null && month != 0) {
            return Result.success(cockpitProvinceDao.getFinanceByMonth(member.getProvinceId(), year, month));
        } else {
            return Result.success(cockpitProvinceDao.getFinanceByMonth(member.getProvinceId(), LocalDate.now().getYear(), LocalDate.now().getMonthValue()));
        }

    }

    /**
     * 省区 销售商机数据
     */
    @Override
    public Result selectBusinessOpportunities(Member member, Integer year, Integer month) {
        //省管理员
        if (!member.getRolesIds().contains(3)) return Result.failure("您的账号不是省管理员角色，无权查看");
        if (member.getProvinceId() == null) return Result.failure("您的账号没有配置所属省区,请联系系统管理员进行省区配置");
        if (year != null && month != null && month == 0) {
            return Result.success(cockpitProvinceDao.getBusinessOpportunities(member.getProvinceId(), year, null));
        } else if (year != null && month != null && month != 0) {
            return Result.success(cockpitProvinceDao.getBusinessOpportunities(member.getProvinceId(), year, month));
        } else {
            return Result.success(cockpitProvinceDao.getBusinessOpportunities(member.getProvinceId(), LocalDate.now().getYear(), LocalDate.now().getMonthValue()));
        }
    }

    /**
     * 省区 30%以上商机数据
     */
    @Override
    public   Result selectBusinessOpportunitiesStage30(Member member, Integer year, Integer month) {
        //省管理员
        if (!member.getRolesIds().contains(3)) return Result.failure("您的账号不是省管理员角色，无权查看");
        if (member.getProvinceId() == null) return Result.failure("您的账号没有配置所属省区,请联系系统管理员进行省区配置");
        if (year != null && month != null && month == 0) {
            return Result.success(cockpitProvinceDao.getBusinessOpportunitiesStage30(member.getProvinceId(), year, null));
        } else if (year != null && month != null && month != 0) {
            return Result.success(cockpitProvinceDao.getBusinessOpportunitiesStage30(member.getProvinceId(), year, month));
        } else {
            return Result.success(cockpitProvinceDao.getBusinessOpportunitiesStage30(member.getProvinceId(), LocalDate.now().getYear(), LocalDate.now().getMonthValue()));
        }
    }

    /**
     * 省区 在线课程生产管理库存情况
     */
    @Override
    public Result selectOnLineCourseStock(Member member) {
        //省管理员
        if (!member.getRolesIds().contains(3)) return Result.failure("您的账号不是省管理员角色，无权查看");
        if (member.getProvinceId() == null) return Result.failure("您的账号没有配置所属省区,请联系系统管理员进行省区配置");
        return Result.success(cockpitProvinceDao.getOnLineCourseStock(member.getProvinceId()));
    }

    /**
     * 省区 产能数据
     */
    @Override
    public Result selectCourseCapacity(Member member) {
        //省管理员
        if (!member.getRolesIds().contains(3)) return Result.failure("您的账号不是省管理员角色，无权查看");
        if (member.getProvinceId() == null) return Result.failure("您的账号没有配置所属省区,请联系系统管理员进行省区配置");
        return Result.success(cockpitProvinceDao.getCourseCapacity(member.getProvinceId()));
    }
}
